package com.atguigu09.inner;

import java.sql.SQLOutput;

/**
 * ClassName: PersonTest
 * Description:
 *
 * @Author liu
 * @Create 2024/11/11 22:11
 * @Version 1.0
 */
public class OuterClasstest {
    public static void main(String[] args) {
        //1. 创建Person的 静态 的成员内部类的实例
        Person.Dog dog = new Person.Dog();
        dog.eat();

        //2. 创建Person的 非静态 的成员内部类的实例
 //         Person.Bird bird = new Person.Bird();// 错误的，静态类没法直接调用

        Person p1 = new Person();
        Person.Bird bird = p1.new Bird();//正确的

        bird.eat();
        bird.show("tom");
        bird.show1();
    }
}


class Person{//内部类
    String name = "tom";
    int age = 1;

    //静态的成员内部类
    static class Dog{
        public void eat() {
            System.out.println("狗吃骨头");
        }
    }
    // 非静态的成员内部类
        class Bird{
            String name ="啄木鸟";

            public void eat(){
                System.out.println("鸟吃虫子");
            }
            public void show(String name){
                System.out.println("age = "+ age);
            }

            public void show1(){
                eat();
                this.eat();
                Person.this.eat();
            }
        }

        public void eat(){
            System.out.println("人吃饭");
        }

        //方法
        public void method(){
        //局部内部类
            class InnerClass1{

            }
        }

        //构造器
    public Person(){
        //局部内部类
        class InnerClass1{

        }
    }


    //代码块
    {
        //局部内部类
        class InnerClass1{

        }
    }


}